######################
##  COMMON COMMAND  ##
######################

## Launch terminal
super + Return
	alacritty

## Drawing terminal
super + ctrl + Return
	bspc rule -a \* -o state=floating rectangle=$(slop -f "%g") && alacritty

## Show help on key bindings
super + F1
	alacritty --class alacritty_keys_help -t alacritty_keys_help -e ~/.config/sxhkd/show_help.sh

## Reload sxhkd config
super + Escape
	pkill -USR1 -x sxhkd

## Volume
XF86Audio{RaiseVolume,LowerVolume,Mute}
	volumedunst.sh {up,down,mute}

## Screenshot
Print + {_,alt}
	screenshot.sh {_,-s}

## Browser and Telegram
super + alt + {w,t}
	{palemoon,telegram-desktop}

## Some scripts
super + alt + {y,s,l}
	{dmenu_youtube.sh,search.sh,todo.sh}

## Cmus and hardware status
super + alt + {c,h}
	{dzen_cmus 2>&-,hardware-information.sh 2>&-}

## Recording
super + shift + {s,p}
	{record,killall ffmpeg && notify-send "FFmpeg" "Gravação da tela finalizada!"}

## Previous/Next song
super + {comma, period}
	cmus-remote {--prev, --next} && pkill dunst && cmus-status

## Play/Pause a song on cmus
super + {p,u}
	cmus-remote {--play, --pause}

######################
##  BSPWM COMMANDS  ##
######################

## Quit bspwm normally
super + alt + Escape
	killall bar; bspc quit

# Reload bspwm config
super + shift + BackSpace
    ~/.config/bspwm/bspwmrc

# Close and kill
super + {_,shift + }q
	bspc node -{c,k}

# alternate between the tiled and monocle layout
super + m
	bspc desktop -l next

# send the newest marked node to the newest preselected node
super + y
	bspc node newest.marked.local -n newest.!automatic.local

# swap the current node and the biggest node
super + g
	bspc node -s biggest

#
# state/flags
#

super + {a,shift + t,s,f}
	bspc node -t {tiled,pseudo_tiled,floating,fullscreen}

# set the node flags
super + ctrl + {m,x,y,z}
	bspc node -g {marked,locked,sticky,private}

#
# focus/swap
#

# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
	bspc node -{f,s} {west,south,north,east}

## Switch focus between the windows of the current desktop
super + {_,shift + }c
	bspc node -f {next,prev}.local

# focus the next/previous desktop in the current monitor
super + bracket{left,right}
	bspc desktop -f {prev,next}.local

## Switch to last opened workspace
super + Tab
	bspc {node,desktop} -f last

## Switch between windows on the same workspace 
alt + Tab
    bspc node -f {next,prev}.local

# focus the older or newer node in the focus history
super + {o,i}
	bspc wm -h off; \
	bspc node {older,newer} -f; \
	bspc wm -h on

## Send focused window to another workspace
super + {_,shift + }{1-5}
	bspc {desktop -f,node -d} '^{1-5}'

#
# preselect
#

# preselect the direction
super + ctrl + {h,j,k,l}
	bspc node -p {west,south,north,east}

# preselect the ratio
super + ctrl + {1-9}
	bspc node -o 0.{1-9}

# cancel the preselection for the focused node
super + ctrl + space
	bspc node -p cancel

# cancel the preselection for the focused desktop
super + ctrl + shift + space
	bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel

#
# move/resize
#

## Expanding windows
super + control + {Left,Right,Up,Down}
    bspc node -z {left -20 0,right 20 0,top 0 -20,bottom 0 20}

## Shrinking windows
super + alt + {Left,Right,Up,Down}
    bspc node -z {left 20 0,right -20 0,top 0 20,bottom 0 -20}

## Move a floating window
super + {Left,Down,Up,Right}
	bspc node -v {-20 0,0 20,0 -20,20 0}

#
# Custom
#

## Change window gap
super + {minus,equal}
    bspc config -d focused window_gap $((`bspc config -d focused window_gap` {+,-} 2 ))

## Center window
super + w
	center-window
